# -*- coding:utf-8 -*-
__author__ = 'Kalyugin Pavel'

from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from HW_PO.Pages.AddFilmPage import AddFilmPage
from HW_PO.Pages.SearchResultPage import SearchResultPage
import time


class MainPage(object):
    def __init__(self, driver, base_url):
        self.driver = driver
        self.base_url = base_url

    def go_to_main_page(self):
        self.driver.get(self.base_url)

    """
    Метод авторизации пользователем
    @param user : пользователь
    """
    def authorize(self, user):
        self.driver.find_element_by_id("username").send_keys(user.username)
        self.driver.find_element_by_name("password").send_keys(user.password)
        self.driver.find_element_by_name("submit").click()

    """
    Метод открытия страницы добавления фильма
    """
    def open_add_film_page(self):
        # Кнопка добавления фильма (Add movie)
        self.driver.find_element_by_xpath("(//*[@id='content']//a)[1]").click()
        return AddFilmPage(self.driver)

    """
    Метод поиска фильма
    """
    def search_film(self, film_name):
        try:
            # Фильм с главной (объект) должен смениться
            element_to_disappear = self.driver.find_element_by_xpath("(//*[@class='movie_box'])[1]")

            # Ввод поискового запроса
            input_field = self.driver.find_element_by_id("q")
            input_field.send_keys(Keys.CONTROL + "a")
            time.sleep(1)
            input_field.send_keys(film_name + Keys.RETURN)

            # Ожидание смены фильма
            WebDriverWait(self.driver, 10).until(EC.staleness_of(element_to_disappear))

        except:
            raise NoSuchElementException("Film not founded")

        return SearchResultPage(self.driver, film_name)